{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b66da46f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import tushare as ts\n",
    "import time\n",
    "import re\n",
    "import os\n",
    "from funcs import *\n",
    "from sqlalchemy import text, create_engine\n",
    "from tqdm.notebook import tqdm\n",
    "from datetime import datetime,timedelta\n",
    "\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import tushare as ts\n",
    "\n",
    "import statsmodels.api as sm\n",
    "from statsmodels.regression.rolling import RollingOLS\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei'] \n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "token = '1501ffe708345cffa38d9bbc0bd371e93b4b7412e7a8e1f811d3c442'\n",
    "ts.set_token(token)\n",
    "pro = ts.pro_api(token)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a4817442",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a8d83fa5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0d30b9da115f4a10a9235e8af0a5e483",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/86 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "期货前缀ss = os.listdir('D:/tushare_database/dailydata')\n",
    "期货前缀ss = [x.split('.')[0] for x in 期货前缀ss]\n",
    "\n",
    "期货前缀ss2 = []\n",
    "for 期货前缀 in tqdm(期货前缀ss):\n",
    "    df = get_df(期货前缀)\n",
    "    df_close = df.pivot(index='t', columns='code', values='close')\n",
    "#     if (df_close.notnull().sum(1) != 0).sum() > 250 and df_close.columns[-1] > '2301':\n",
    "    if (df_close.notnull().sum(1) != 0).sum() > 250:\n",
    "        期货前缀ss2.append(期货前缀)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "d98fef89",
   "metadata": {},
   "outputs": [],
   "source": [
    "交易所s = ['CFFEX','DCE','CZCE','SHFE','INE','GFEX']\n",
    "dds = []\n",
    "for 交易所 in 交易所s:\n",
    "    dd = pro.fut_basic(exchange=交易所, fut_type='1')\n",
    "    dds.append(dd)\n",
    "df_所有合约 = pd.concat(dds)\n",
    "df_所有合约['list_date'] = pd.to_datetime(df_所有合约['list_date'])\n",
    "df_所有合约['delist_date'] = pd.to_datetime(df_所有合约['delist_date'])\n",
    "df_所有合约 = df_所有合约[df_所有合约['delist_date']>'2010-01-01']\n",
    "df_所有合约 = df_所有合约.sort_values(by=['ts_code']).reset_index(drop=True)\n",
    "df_所有合约['name'] = df_所有合约['name'].apply(lambda x:re.sub(r'[^\\u4e00-\\u9fa5]', '', x))\n",
    "all_codes = list(df_所有合约['ts_code'])\n",
    "code_delist_date_dict = dict(zip(df_所有合约['ts_code'].apply(lambda x:x.split('.')[0]),\n",
    "                                 df_所有合约['delist_date']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "949e389d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5278acd7526f49649be60836500cc736",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/77 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ddds = []\n",
    "for 期货前缀 in tqdm(期货前缀ss2):\n",
    "    df = get_df(期货前缀)\n",
    "    df_open = df.pivot(index='t', columns='code', values='open')\n",
    "    df_high = df.pivot(index='t', columns='code', values='high')\n",
    "    df_low = df.pivot(index='t', columns='code', values='low')\n",
    "    df_close = df.pivot(index='t', columns='code', values='close')\n",
    "    df_close_pct = df_close.apply(lambda x:x.dropna().pct_change(),axis=1)\n",
    "    df_money = df.pivot(index='t', columns='code', values='amount')\n",
    "    df_money_ratio = df_money.div(df_money.sum(1),axis=0)\n",
    "    df_oi = df.pivot(index='t', columns='code', values='oi')\n",
    "    (df_open - df_close.shift(1))/df_close.shift(-1)\n",
    "\n",
    "#     合约最后交易日 = list(map(lambda x: pd.to_datetime(f'20{x[:2]}-{x[2:4]}-15'), df_close.columns))\n",
    "    合约最后交易日 = list(map(lambda x:code_delist_date_dict.get(期货前缀+x) , df_close.columns))\n",
    "    交易日 = list(df_close.index)\n",
    "    pp = []\n",
    "    for i in range(len(交易日)):\n",
    "        p = []\n",
    "        for j in range(len(合约最后交易日)):\n",
    "            p.append((合约最后交易日[j] - 交易日[i]).days)\n",
    "        pp.append(p)\n",
    "\n",
    "    df_合约剩余日期 = pd.DataFrame(pp, index=df_close.index, columns=df_close.columns)\n",
    "\n",
    "    dd_amount = df.pivot(index='t',columns='code',values='amount')\n",
    "    当前主力代码 = pd.Series(dd_amount.columns[np.argsort(-dd_amount.values,axis=1)[:,0]],index=dd_amount.index).shift(1)\n",
    "    当前次主力代码 = pd.Series(dd_amount.columns[np.argsort(-dd_amount.values,axis=1)[:,1]],index=dd_amount.index).shift(1)\n",
    "    当前次次主力代码 = pd.Series(dd_amount.columns[np.argsort(-dd_amount.values,axis=1)[:,2]],index=dd_amount.index).shift(1)\n",
    "    ddd = pd.concat([\n",
    "        当前主力代码,\n",
    "        当前次主力代码,\n",
    "        df_close.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_close.apply(lambda x: x.get(当前次主力代码.get(x.name)), axis=1),\n",
    "        df_open.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_high.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_low.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_合约剩余日期.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_合约剩余日期.apply(lambda x: x.get(当前次主力代码.get(x.name)), axis=1),\n",
    "        df_合约剩余日期.apply(lambda x: x.get(当前次次主力代码.get(x.name)), axis=1),\n",
    "        df_money.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_money.apply(lambda x: x.get(当前次主力代码.get(x.name)), axis=1),\n",
    "        df_money_ratio.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_money_ratio.apply(lambda x: x.get(当前次主力代码.get(x.name)), axis=1),\n",
    "        df_close.pct_change().apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_close.pct_change().apply(lambda x: x.get(当前次主力代码.get(x.name)), axis=1),\n",
    "        df_close.pct_change().apply(lambda x: x.get(当前次次主力代码.get(x.name)), axis=1),\n",
    "        ((df_open - df_close.shift(1))/df_close.shift(-1)).apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        ((df_open - df_close.shift(1))/df_close.shift(-1)).apply(lambda x: x.get(当前次主力代码.get(x.name)), axis=1),\n",
    "        df_oi.sum(1),\n",
    "        df_oi.apply(lambda x: x.get(当前主力代码.get(x.name)), axis=1),\n",
    "        df_oi.apply(lambda x: x.get(当前次主力代码.get(x.name)), axis=1)\n",
    "    ], axis=1)\n",
    "    ddd.columns = ['主力代码', '次主力代码',\n",
    "                   '主力close', '次主力close',\n",
    "                   '主力open',\n",
    "                   '主力high', '主力low',\n",
    "                   '主力剩余日','次主力剩余日','次次主力剩余日',\n",
    "                   '主力交易额','次主力交易额',\n",
    "                   '主力交易额占比','次主力交易额占比',\n",
    "                   '主力代码收益率',\n",
    "                   '次主力代码收益率',\n",
    "                   '次次主力代码收益率',\n",
    "                   '开盘涨跌幅',\n",
    "                   '开盘次主力涨跌幅',\n",
    "                   '持仓量',\n",
    "                   '主力持仓',\n",
    "                   '次主力持仓']\n",
    "    ddd['交易额总额'] = df_money.sum(1)\n",
    "    ddd['展期率'] = 365*(ddd['次主力close'] - ddd['主力close'])/(ddd['次主力剩余日'] - ddd['主力剩余日'])/ddd['主力close']\n",
    "    ddd['主次持仓之和'] = ddd['主力持仓'] + ddd['次主力持仓']\n",
    "    ddd['流动性倒数'] = ddd['主力代码收益率'].abs()/ddd['主力交易额']\n",
    "    ddd['成交额加权收益率'] = (df_close.pct_change()*df_money_ratio).sum(1)\n",
    "    \n",
    "    ddd['近月收益率'] = (ddd['主力剩余日'] < ddd['次主力剩余日'])*ddd['主力代码收益率'] + \\\n",
    "    (ddd['主力剩余日'] >= ddd['次主力剩余日'])*ddd['次主力代码收益率']\n",
    "    ddd['远月收益率'] = (ddd['主力剩余日'] >= ddd['次主力剩余日'])*ddd['主力代码收益率'] + \\\n",
    "    (ddd['主力剩余日'] < ddd['次主力剩余日'])*ddd['次主力代码收益率']\n",
    "    \n",
    "    ddd['近月收益率2'] = (ddd['次主力剩余日'] < ddd['次次主力剩余日'])*ddd['次主力代码收益率'] + \\\n",
    "    (ddd['次主力剩余日'] >= ddd['次次主力剩余日'])*ddd['次次主力代码收益率']\n",
    "    ddd['远月收益率2'] = (ddd['次主力剩余日'] < ddd['次次主力剩余日'])*ddd['次主力代码收益率'] + \\\n",
    "    (ddd['次主力剩余日'] >- ddd['次次主力剩余日'])*ddd['次次主力代码收益率']\n",
    "    \n",
    "    ddd['近月收益率3'] = (ddd['主力剩余日'] < ddd['次次主力剩余日'])*ddd['主力代码收益率'] + \\\n",
    "    (ddd['主力剩余日'] >= ddd['次次主力剩余日'])*ddd['次次主力代码收益率']\n",
    "    ddd['远月收益率3'] = (ddd['主力剩余日'] >= ddd['次次主力剩余日'])*ddd['主力代码收益率'] + \\\n",
    "    (ddd['主力剩余日'] < ddd['次次主力剩余日'])*ddd['次次主力代码收益率']\n",
    "    \n",
    "    ddd['基差收益率'] = ddd['近月收益率'] - ddd['远月收益率']\n",
    "    ddd['基差收益率2'] = ddd['近月收益率2'] - ddd['远月收益率2']\n",
    "    ddd['基差收益率3'] = ddd['近月收益率3'] - ddd['远月收益率3']\n",
    "    ddd['curveRSI'] = (df_close_pct*(df_close_pct > 0)).sum(1) / df_close_pct.abs().sum(1)\n",
    "    ddd['平均合约间价格变化率'] = df_close.pct_change(axis=1).sum(1)/(df_close.notnull().sum(1) - 1)\n",
    "    ddds.append(ddd)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 304,
   "id": "790cd006",
   "metadata": {},
   "outputs": [],
   "source": [
    "dff_ret = pd.concat([x['主力代码收益率'] for x in ddds],axis=1)\n",
    "dff_ret.columns = 期货前缀ss2\n",
    "\n",
    "dff01 = pd.concat([x['主力交易额'] for x in ddds],axis=1)\n",
    "dff02 = pd.concat([x['次主力交易额'] for x in ddds],axis=1)\n",
    "dff03 = pd.concat([x['交易额总额'] for x in ddds],axis=1)\n",
    "dff1 = pd.concat([x['展期率'] for x in ddds],axis=1)\n",
    "dff2 = pd.concat([x['开盘涨跌幅'] for x in ddds],axis=1)\n",
    "dff22 = pd.concat([x['开盘次主力涨跌幅'] for x in ddds],axis=1)\n",
    "dff3 = pd.concat([x['主力代码收益率'] for x in ddds],axis=1)\n",
    "dff4 = pd.concat([x['主力持仓'] for x in ddds],axis=1)\n",
    "dff5 = pd.concat([x['基差收益率'] for x in ddds],axis=1)\n",
    "dff8 = pd.concat([x['curveRSI'] for x in ddds],axis=1)\n",
    "dff81 = pd.concat([x['平均合约间价格变化率'] for x in ddds],axis=1)\n",
    "dff52 = pd.concat([x['基差收益率2'] for x in ddds],axis=1)\n",
    "dff53 = pd.concat([x['基差收益率3'] for x in ddds],axis=1)\n",
    "dff32 = pd.concat([x['次主力代码收益率'] for x in ddds],axis=1)\n",
    "\n",
    "dff_open = pd.concat([x['主力open'] for x in ddds],axis=1)\n",
    "dff_high = pd.concat([x['主力high'] for x in ddds],axis=1)\n",
    "dff_low = pd.concat([x['主力low'] for x in ddds],axis=1)\n",
    "dff_close = pd.concat([x['主力close'] for x in ddds],axis=1)\n",
    "\n",
    "N = 120\n",
    "n1 = 0\n",
    "HH = dff_high.shift(n1).rolling(N).max()\n",
    "LL = dff_low.shift(n1).rolling(N).min()\n",
    "HC = dff_close.shift(n1).rolling(N).max()\n",
    "LC = dff_close.shift(n1).rolling(N).min()\n",
    "HH.columns = 期货前缀ss2\n",
    "LL.columns = 期货前缀ss2\n",
    "HC.columns = 期货前缀ss2\n",
    "LC.columns = 期货前缀ss2\n",
    "dff_close.columns = 期货前缀ss2\n",
    "ATR = np.maximum(HH - LC, HC - LL)\n",
    "# ATR = ATR/dff_close\n",
    "dff6 = ATR.copy()\n",
    "dff7 = dff_close.copy()\n",
    "\n",
    "dff_open.columns = 期货前缀ss2\n",
    "dff_close.columns = 期货前缀ss2\n",
    "dff_high.columns = 期货前缀ss2\n",
    "dff_low.columns = 期货前缀ss2\n",
    "dff01.columns = 期货前缀ss2\n",
    "dff02.columns = 期货前缀ss2\n",
    "dff03.columns = 期货前缀ss2\n",
    "dff1.columns = 期货前缀ss2\n",
    "dff2.columns = 期货前缀ss2\n",
    "dff22.columns = 期货前缀ss2\n",
    "dff3.columns = 期货前缀ss2\n",
    "dff32.columns = 期货前缀ss2\n",
    "dff4.columns = 期货前缀ss2\n",
    "dff5.columns = 期货前缀ss2\n",
    "dff52.columns = 期货前缀ss2\n",
    "dff53.columns = 期货前缀ss2\n",
    "dff8.columns = 期货前缀ss2\n",
    "dff81.columns = 期货前缀ss2\n",
    "\n",
    "dff00 = (dff01 - dff02)/dff01\n",
    "dff00.columns = 期货前缀ss2\n",
    "\n",
    "s_date = '2010-01-01'\n",
    "d_date = '2023-12-30'\n",
    "\n",
    "dff_ret = dff_ret[s_date:d_date]\n",
    "\n",
    "dff_high = dff_high[s_date:d_date]\n",
    "dff_low = dff_low[s_date:d_date]\n",
    "dff01 = dff01[s_date:d_date]\n",
    "dff02 = dff02[s_date:d_date]\n",
    "dff03 = dff03[s_date:d_date]\n",
    "dff00 = dff00[s_date:d_date]\n",
    "dff1 = dff1[s_date:d_date]\n",
    "dff2 = dff2[s_date:d_date]\n",
    "dff22 = dff22[s_date:d_date]\n",
    "dff3 = dff3[s_date:d_date]\n",
    "dff32 = dff32[s_date:d_date]\n",
    "dff4 = dff4[s_date:d_date]\n",
    "dff5 = dff5[s_date:d_date]\n",
    "dff52 = dff52[s_date:d_date]\n",
    "dff53 = dff53[s_date:d_date]\n",
    "dff6 = dff6[s_date:d_date]\n",
    "dff7 = dff7[s_date:d_date]\n",
    "dff8 = dff8[s_date:d_date]\n",
    "dff81 = dff81[s_date:d_date]\n",
    "dff_open = dff_open[s_date:d_date]\n",
    "dff_high = dff_high[s_date:d_date]\n",
    "dff_low = dff_low[s_date:d_date]\n",
    "dff_close = dff_close[s_date:d_date]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 305,
   "id": "32f77077",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>AG</th>\n",
       "      <th>AL</th>\n",
       "      <th>AP</th>\n",
       "      <th>AU</th>\n",
       "      <th>B</th>\n",
       "      <th>BB</th>\n",
       "      <th>BC</th>\n",
       "      <th>BU</th>\n",
       "      <th>C</th>\n",
       "      <th>...</th>\n",
       "      <th>TS</th>\n",
       "      <th>UR</th>\n",
       "      <th>V</th>\n",
       "      <th>WH</th>\n",
       "      <th>WR</th>\n",
       "      <th>WS</th>\n",
       "      <th>WT</th>\n",
       "      <th>Y</th>\n",
       "      <th>ZC</th>\n",
       "      <th>ZN</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-04</th>\n",
       "      <td>4080.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17440.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>245.38</td>\n",
       "      <td>4085.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1878.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7720.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4322.0</td>\n",
       "      <td>2275.0</td>\n",
       "      <td>1989.0</td>\n",
       "      <td>8030.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21405.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-05</th>\n",
       "      <td>4067.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17250.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>250.00</td>\n",
       "      <td>4121.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1893.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7685.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4330.0</td>\n",
       "      <td>2280.0</td>\n",
       "      <td>1982.0</td>\n",
       "      <td>8088.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21470.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-06</th>\n",
       "      <td>4066.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17520.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>251.01</td>\n",
       "      <td>4112.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1895.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7690.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4340.0</td>\n",
       "      <td>2276.0</td>\n",
       "      <td>2009.0</td>\n",
       "      <td>8030.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21580.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-07</th>\n",
       "      <td>4165.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18400.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>255.10</td>\n",
       "      <td>4190.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1910.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7695.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4377.0</td>\n",
       "      <td>2295.0</td>\n",
       "      <td>1997.0</td>\n",
       "      <td>8100.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>22150.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-08</th>\n",
       "      <td>4040.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17770.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>251.22</td>\n",
       "      <td>4050.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1898.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7600.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4287.0</td>\n",
       "      <td>2278.0</td>\n",
       "      <td>1973.0</td>\n",
       "      <td>7860.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21520.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-11</th>\n",
       "      <td>4920.0</td>\n",
       "      <td>5999.0</td>\n",
       "      <td>18470.0</td>\n",
       "      <td>8480.0</td>\n",
       "      <td>475.00</td>\n",
       "      <td>4428.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>60520.0</td>\n",
       "      <td>3709.0</td>\n",
       "      <td>2491.0</td>\n",
       "      <td>...</td>\n",
       "      <td>100.984</td>\n",
       "      <td>2244.0</td>\n",
       "      <td>5845.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4299.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8076.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20725.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-12</th>\n",
       "      <td>4929.0</td>\n",
       "      <td>5856.0</td>\n",
       "      <td>18360.0</td>\n",
       "      <td>8359.0</td>\n",
       "      <td>470.78</td>\n",
       "      <td>4414.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>60320.0</td>\n",
       "      <td>3683.0</td>\n",
       "      <td>2481.0</td>\n",
       "      <td>...</td>\n",
       "      <td>100.976</td>\n",
       "      <td>2242.0</td>\n",
       "      <td>5830.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4270.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8062.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20600.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-13</th>\n",
       "      <td>4954.0</td>\n",
       "      <td>5869.0</td>\n",
       "      <td>18435.0</td>\n",
       "      <td>8313.0</td>\n",
       "      <td>469.86</td>\n",
       "      <td>4423.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>60330.0</td>\n",
       "      <td>3674.0</td>\n",
       "      <td>2466.0</td>\n",
       "      <td>...</td>\n",
       "      <td>101.014</td>\n",
       "      <td>2290.0</td>\n",
       "      <td>5860.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4272.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7736.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20880.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-14</th>\n",
       "      <td>4872.0</td>\n",
       "      <td>5837.0</td>\n",
       "      <td>18385.0</td>\n",
       "      <td>8397.0</td>\n",
       "      <td>469.72</td>\n",
       "      <td>4342.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>59970.0</td>\n",
       "      <td>3687.0</td>\n",
       "      <td>2451.0</td>\n",
       "      <td>...</td>\n",
       "      <td>101.100</td>\n",
       "      <td>2272.0</td>\n",
       "      <td>5855.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4179.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7616.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20750.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-15</th>\n",
       "      <td>4815.0</td>\n",
       "      <td>6051.0</td>\n",
       "      <td>18720.0</td>\n",
       "      <td>8414.0</td>\n",
       "      <td>476.54</td>\n",
       "      <td>4334.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>61030.0</td>\n",
       "      <td>3713.0</td>\n",
       "      <td>2450.0</td>\n",
       "      <td>...</td>\n",
       "      <td>101.140</td>\n",
       "      <td>2236.0</td>\n",
       "      <td>5820.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4183.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7616.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20885.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3391 rows × 77 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 A      AG       AL      AP      AU       B  BB       BC  \\\n",
       "t                                                                          \n",
       "2010-01-04  4080.0     NaN  17440.0     NaN  245.38  4085.0 NaN      NaN   \n",
       "2010-01-05  4067.0     NaN  17250.0     NaN  250.00  4121.0 NaN      NaN   \n",
       "2010-01-06  4066.0     NaN  17520.0     NaN  251.01  4112.0 NaN      NaN   \n",
       "2010-01-07  4165.0     NaN  18400.0     NaN  255.10  4190.0 NaN      NaN   \n",
       "2010-01-08  4040.0     NaN  17770.0     NaN  251.22  4050.0 NaN      NaN   \n",
       "...            ...     ...      ...     ...     ...     ...  ..      ...   \n",
       "2023-12-11  4920.0  5999.0  18470.0  8480.0  475.00  4428.0 NaN  60520.0   \n",
       "2023-12-12  4929.0  5856.0  18360.0  8359.0  470.78  4414.0 NaN  60320.0   \n",
       "2023-12-13  4954.0  5869.0  18435.0  8313.0  469.86  4423.0 NaN  60330.0   \n",
       "2023-12-14  4872.0  5837.0  18385.0  8397.0  469.72  4342.0 NaN  59970.0   \n",
       "2023-12-15  4815.0  6051.0  18720.0  8414.0  476.54  4334.0 NaN  61030.0   \n",
       "\n",
       "                BU       C  ...       TS      UR       V  WH      WR      WS  \\\n",
       "t                           ...                                                \n",
       "2010-01-04     NaN  1878.0  ...      NaN     NaN  7720.0 NaN  4322.0  2275.0   \n",
       "2010-01-05     NaN  1893.0  ...      NaN     NaN  7685.0 NaN  4330.0  2280.0   \n",
       "2010-01-06     NaN  1895.0  ...      NaN     NaN  7690.0 NaN  4340.0  2276.0   \n",
       "2010-01-07     NaN  1910.0  ...      NaN     NaN  7695.0 NaN  4377.0  2295.0   \n",
       "2010-01-08     NaN  1898.0  ...      NaN     NaN  7600.0 NaN  4287.0  2278.0   \n",
       "...            ...     ...  ...      ...     ...     ...  ..     ...     ...   \n",
       "2023-12-11  3709.0  2491.0  ...  100.984  2244.0  5845.0 NaN  4299.0     NaN   \n",
       "2023-12-12  3683.0  2481.0  ...  100.976  2242.0  5830.0 NaN  4270.0     NaN   \n",
       "2023-12-13  3674.0  2466.0  ...  101.014  2290.0  5860.0 NaN  4272.0     NaN   \n",
       "2023-12-14  3687.0  2451.0  ...  101.100  2272.0  5855.0 NaN  4179.0     NaN   \n",
       "2023-12-15  3713.0  2450.0  ...  101.140  2236.0  5820.0 NaN  4183.0     NaN   \n",
       "\n",
       "                WT       Y  ZC       ZN  \n",
       "t                                        \n",
       "2010-01-04  1989.0  8030.0 NaN  21405.0  \n",
       "2010-01-05  1982.0  8088.0 NaN  21470.0  \n",
       "2010-01-06  2009.0  8030.0 NaN  21580.0  \n",
       "2010-01-07  1997.0  8100.0 NaN  22150.0  \n",
       "2010-01-08  1973.0  7860.0 NaN  21520.0  \n",
       "...            ...     ...  ..      ...  \n",
       "2023-12-11     NaN  8076.0 NaN  20725.0  \n",
       "2023-12-12     NaN  8062.0 NaN  20600.0  \n",
       "2023-12-13     NaN  7736.0 NaN  20880.0  \n",
       "2023-12-14     NaN  7616.0 NaN  20750.0  \n",
       "2023-12-15     NaN  7616.0 NaN  20885.0  \n",
       "\n",
       "[3391 rows x 77 columns]"
      ]
     },
     "execution_count": 305,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dff_high > dff_high.shift(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c9d4c0b2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f4efc339",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "id": "3184c24b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.751576998726883\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "rr = dff3.resample('M').sum().shift(-1)\n",
    "xx = dff3.resample('M').sum().rolling(18).mean()\n",
    "xx = dff3.rolling(375).mean().resample('M').last()\n",
    "xx = dff3.rolling(120).skew().resample('M').last()\n",
    "xx = dff3.rolling(60).mean().resample('M').last()\n",
    "# xx = (dff3.rolling(230).mean() - dff3.rolling(250).mean()).resample('M').last()\n",
    "# xx = dff3.rolling(120).kurt().resample('M').last()\n",
    "# xx = dff3.rolling(42).mean().resample('M').last()\n",
    "# xx = dff3.resample('M').sum()\n",
    "xx = xx.rank(1,pct=True)\n",
    "# xx = (xx > 0.5)*1 + (xx < 0.5)*-1\n",
    "xx = ((xx < 0.75)&(xx>0.55))*1 + ((xx < 0.45)&(xx>0.25))*-1\n",
    "ret = (xx*rr).sum(1)/(xx!=0).sum(1)\n",
    "sp = (12**0.5)*ret.mean()/ret.std()\n",
    "ret.cumsum().plot(figsize=(14,6),grid=True)\n",
    "print(sp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "id": "aa69b53a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fc2e24cd90>"
      ]
     },
     "execution_count": 271,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.concat([ret1,ret2],axis=1).cumsum().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "id": "ca5ca830",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fc2a085d60>"
      ]
     },
     "execution_count": 275,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.concat([ret1,ret2],axis=1).mean(1).cumsum().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "id": "2f451a76",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5425305512882298"
      ]
     },
     "execution_count": 276,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = pd.concat([ret1,ret2],axis=1).mean(1)\n",
    "(12**0.5)*x.mean()/x.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "id": "644fdc05",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.460184\n",
       "1    0.439942\n",
       "dtype: float64"
      ]
     },
     "execution_count": 278,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(12**0.5)*pd.concat([ret1,ret2],axis=1).mean()/pd.concat([ret1,ret2],axis=1).std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "id": "8f1b09be",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>AG</th>\n",
       "      <th>AL</th>\n",
       "      <th>AP</th>\n",
       "      <th>AU</th>\n",
       "      <th>B</th>\n",
       "      <th>BB</th>\n",
       "      <th>BC</th>\n",
       "      <th>BU</th>\n",
       "      <th>C</th>\n",
       "      <th>...</th>\n",
       "      <th>TS</th>\n",
       "      <th>UR</th>\n",
       "      <th>V</th>\n",
       "      <th>WH</th>\n",
       "      <th>WR</th>\n",
       "      <th>WS</th>\n",
       "      <th>WT</th>\n",
       "      <th>Y</th>\n",
       "      <th>ZC</th>\n",
       "      <th>ZN</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-31</th>\n",
       "      <td>-0.045409</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.081117</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.031684</td>\n",
       "      <td>-0.039635</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.009751</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.110678</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.047878</td>\n",
       "      <td>-0.011818</td>\n",
       "      <td>-0.031811</td>\n",
       "      <td>-0.090084</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.197758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-02-28</th>\n",
       "      <td>-0.005247</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.037076</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.030707</td>\n",
       "      <td>0.000514</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.006574</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.031377</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.016254</td>\n",
       "      <td>0.017716</td>\n",
       "      <td>0.001317</td>\n",
       "      <td>0.023470</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.041270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-03-31</th>\n",
       "      <td>0.015440</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.018291</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.003718</td>\n",
       "      <td>0.007971</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.032887</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.018661</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.059704</td>\n",
       "      <td>-0.002132</td>\n",
       "      <td>0.006748</td>\n",
       "      <td>0.018449</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.023154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-04-30</th>\n",
       "      <td>0.020033</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.032664</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.048426</td>\n",
       "      <td>0.029448</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.003384</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.005301</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.011051</td>\n",
       "      <td>0.006208</td>\n",
       "      <td>-0.033942</td>\n",
       "      <td>0.015512</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.029098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-05-31</th>\n",
       "      <td>-0.038963</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.066249</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.031336</td>\n",
       "      <td>-0.026357</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.011613</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.035311</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.082262</td>\n",
       "      <td>-0.007809</td>\n",
       "      <td>0.014121</td>\n",
       "      <td>-0.045620</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.148864</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-08-31</th>\n",
       "      <td>0.065186</td>\n",
       "      <td>0.029564</td>\n",
       "      <td>0.035767</td>\n",
       "      <td>0.003345</td>\n",
       "      <td>0.015722</td>\n",
       "      <td>0.092842</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.000898</td>\n",
       "      <td>0.010953</td>\n",
       "      <td>0.034360</td>\n",
       "      <td>...</td>\n",
       "      <td>0.001037</td>\n",
       "      <td>0.085229</td>\n",
       "      <td>-0.009079</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.015300</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.099177</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.013624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-09-30</th>\n",
       "      <td>-0.036168</td>\n",
       "      <td>-0.023806</td>\n",
       "      <td>0.035402</td>\n",
       "      <td>0.032799</td>\n",
       "      <td>-0.008600</td>\n",
       "      <td>-0.081385</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.029739</td>\n",
       "      <td>0.057711</td>\n",
       "      <td>-0.038648</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.001825</td>\n",
       "      <td>-0.038654</td>\n",
       "      <td>-0.016303</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.151219</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.036853</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.039106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-10-31</th>\n",
       "      <td>-0.037459</td>\n",
       "      <td>0.015478</td>\n",
       "      <td>-0.005566</td>\n",
       "      <td>-0.084728</td>\n",
       "      <td>0.041834</td>\n",
       "      <td>-0.060625</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.006097</td>\n",
       "      <td>-0.011737</td>\n",
       "      <td>-0.018145</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.000837</td>\n",
       "      <td>0.083772</td>\n",
       "      <td>-0.007035</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.004939</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.026236</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.013801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-11-30</th>\n",
       "      <td>0.036873</td>\n",
       "      <td>0.049592</td>\n",
       "      <td>-0.030075</td>\n",
       "      <td>0.064116</td>\n",
       "      <td>-0.007924</td>\n",
       "      <td>-0.019508</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.015814</td>\n",
       "      <td>-0.016309</td>\n",
       "      <td>-0.014723</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.002771</td>\n",
       "      <td>-0.009305</td>\n",
       "      <td>-0.032489</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.038756</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.042243</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.017390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-31</th>\n",
       "      <td>-0.030059</td>\n",
       "      <td>-0.024681</td>\n",
       "      <td>0.007759</td>\n",
       "      <td>-0.000643</td>\n",
       "      <td>-0.000219</td>\n",
       "      <td>0.006386</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.004761</td>\n",
       "      <td>-0.001303</td>\n",
       "      <td>-0.022959</td>\n",
       "      <td>...</td>\n",
       "      <td>0.002040</td>\n",
       "      <td>-0.005317</td>\n",
       "      <td>0.004156</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.014113</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.043136</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.005504</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>168 rows × 77 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A        AG        AL        AP        AU         B   BB  \\\n",
       "t                                                                             \n",
       "2010-01-31 -0.045409  0.000000 -0.081117  0.000000 -0.031684 -0.039635  0.0   \n",
       "2010-02-28 -0.005247  0.000000  0.037076  0.000000  0.030707  0.000514  0.0   \n",
       "2010-03-31  0.015440  0.000000 -0.018291  0.000000 -0.003718  0.007971  0.0   \n",
       "2010-04-30  0.020033  0.000000 -0.032664  0.000000  0.048426  0.029448  0.0   \n",
       "2010-05-31 -0.038963  0.000000 -0.066249  0.000000  0.031336 -0.026357  0.0   \n",
       "...              ...       ...       ...       ...       ...       ...  ...   \n",
       "2023-08-31  0.065186  0.029564  0.035767  0.003345  0.015722  0.092842  0.0   \n",
       "2023-09-30 -0.036168 -0.023806  0.035402  0.032799 -0.008600 -0.081385  0.0   \n",
       "2023-10-31 -0.037459  0.015478 -0.005566 -0.084728  0.041834 -0.060625  0.0   \n",
       "2023-11-30  0.036873  0.049592 -0.030075  0.064116 -0.007924 -0.019508  0.0   \n",
       "2023-12-31 -0.030059 -0.024681  0.007759 -0.000643 -0.000219  0.006386  0.0   \n",
       "\n",
       "                  BC        BU         C  ...        TS        UR         V  \\\n",
       "t                                         ...                                 \n",
       "2010-01-31  0.000000  0.000000 -0.009751  ...  0.000000  0.000000 -0.110678   \n",
       "2010-02-28  0.000000  0.000000  0.006574  ...  0.000000  0.000000  0.031377   \n",
       "2010-03-31  0.000000  0.000000  0.032887  ...  0.000000  0.000000 -0.018661   \n",
       "2010-04-30  0.000000  0.000000 -0.003384  ...  0.000000  0.000000 -0.005301   \n",
       "2010-05-31  0.000000  0.000000  0.011613  ...  0.000000  0.000000 -0.035311   \n",
       "...              ...       ...       ...  ...       ...       ...       ...   \n",
       "2023-08-31 -0.000898  0.010953  0.034360  ...  0.001037  0.085229 -0.009079   \n",
       "2023-09-30 -0.029739  0.057711 -0.038648  ... -0.001825 -0.038654 -0.016303   \n",
       "2023-10-31  0.006097 -0.011737 -0.018145  ... -0.000837  0.083772 -0.007035   \n",
       "2023-11-30  0.015814 -0.016309 -0.014723  ... -0.002771 -0.009305 -0.032489   \n",
       "2023-12-31  0.004761 -0.001303 -0.022959  ...  0.002040 -0.005317  0.004156   \n",
       "\n",
       "             WH        WR        WS        WT         Y   ZC        ZN  \n",
       "t                                                                       \n",
       "2010-01-31  0.0 -0.047878 -0.011818 -0.031811 -0.090084  0.0 -0.197758  \n",
       "2010-02-28  0.0 -0.016254  0.017716  0.001317  0.023470  0.0  0.041270  \n",
       "2010-03-31  0.0  0.059704 -0.002132  0.006748  0.018449  0.0  0.023154  \n",
       "2010-04-30  0.0  0.011051  0.006208 -0.033942  0.015512  0.0 -0.029098  \n",
       "2010-05-31  0.0 -0.082262 -0.007809  0.014121 -0.045620  0.0 -0.148864  \n",
       "...         ...       ...       ...       ...       ...  ...       ...  \n",
       "2023-08-31  0.0  0.015300  0.000000  0.000000  0.099177  0.0  0.013624  \n",
       "2023-09-30  0.0 -0.151219  0.000000  0.000000 -0.036853  0.0  0.039106  \n",
       "2023-10-31  0.0 -0.004939  0.000000  0.000000 -0.026236  0.0 -0.013801  \n",
       "2023-11-30  0.0  0.038756  0.000000  0.000000  0.042243  0.0 -0.017390  \n",
       "2023-12-31  0.0  0.014113  0.000000  0.000000 -0.043136  0.0  0.005504  \n",
       "\n",
       "[168 rows x 77 columns]"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xx1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "id": "fb4a83c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>AG</th>\n",
       "      <th>AL</th>\n",
       "      <th>AP</th>\n",
       "      <th>AU</th>\n",
       "      <th>B</th>\n",
       "      <th>BB</th>\n",
       "      <th>BC</th>\n",
       "      <th>BU</th>\n",
       "      <th>C</th>\n",
       "      <th>...</th>\n",
       "      <th>TS</th>\n",
       "      <th>UR</th>\n",
       "      <th>V</th>\n",
       "      <th>WH</th>\n",
       "      <th>WR</th>\n",
       "      <th>WS</th>\n",
       "      <th>WT</th>\n",
       "      <th>Y</th>\n",
       "      <th>ZC</th>\n",
       "      <th>ZN</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-02-28</th>\n",
       "      <td>-0.017422</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.049487</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.005591</td>\n",
       "      <td>-0.008202</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.015174</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.023841</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.032459</td>\n",
       "      <td>0.004032</td>\n",
       "      <td>0.001344</td>\n",
       "      <td>0.000304</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.128161</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-03-31</th>\n",
       "      <td>0.004177</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.005984</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.007704</td>\n",
       "      <td>0.003822</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.029651</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.012065</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.071886</td>\n",
       "      <td>0.001368</td>\n",
       "      <td>-0.003602</td>\n",
       "      <td>0.013863</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.042517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-04-30</th>\n",
       "      <td>0.020033</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.032664</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.048426</td>\n",
       "      <td>0.029448</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.003384</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.005301</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.011051</td>\n",
       "      <td>0.006208</td>\n",
       "      <td>-0.033942</td>\n",
       "      <td>0.015512</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.029098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-05-31</th>\n",
       "      <td>-0.030109</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.061289</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.037210</td>\n",
       "      <td>-0.018121</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.013177</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.031423</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.059860</td>\n",
       "      <td>-0.009550</td>\n",
       "      <td>0.015222</td>\n",
       "      <td>-0.040767</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.151016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-08-31</th>\n",
       "      <td>0.073240</td>\n",
       "      <td>0.024424</td>\n",
       "      <td>0.027853</td>\n",
       "      <td>0.005971</td>\n",
       "      <td>0.013087</td>\n",
       "      <td>0.065657</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000611</td>\n",
       "      <td>0.011367</td>\n",
       "      <td>0.033971</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000593</td>\n",
       "      <td>0.090989</td>\n",
       "      <td>-0.008339</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.016208</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.075390</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.005648</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-09-30</th>\n",
       "      <td>-0.032371</td>\n",
       "      <td>-0.026337</td>\n",
       "      <td>0.046320</td>\n",
       "      <td>0.016333</td>\n",
       "      <td>-0.004960</td>\n",
       "      <td>-0.082331</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.028603</td>\n",
       "      <td>0.054516</td>\n",
       "      <td>-0.037916</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.001479</td>\n",
       "      <td>-0.041748</td>\n",
       "      <td>-0.025032</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.152358</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.035671</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.038391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-10-31</th>\n",
       "      <td>-0.035450</td>\n",
       "      <td>-0.016333</td>\n",
       "      <td>-0.004003</td>\n",
       "      <td>-0.076497</td>\n",
       "      <td>0.018381</td>\n",
       "      <td>-0.050234</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.006670</td>\n",
       "      <td>0.008028</td>\n",
       "      <td>-0.027170</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.000491</td>\n",
       "      <td>0.048596</td>\n",
       "      <td>-0.033567</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.094011</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000289</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.026311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-11-30</th>\n",
       "      <td>0.035844</td>\n",
       "      <td>0.066651</td>\n",
       "      <td>-0.031115</td>\n",
       "      <td>0.052948</td>\n",
       "      <td>-0.004249</td>\n",
       "      <td>-0.028826</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.015982</td>\n",
       "      <td>-0.017112</td>\n",
       "      <td>-0.015904</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.002326</td>\n",
       "      <td>-0.010162</td>\n",
       "      <td>-0.034131</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.030439</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.034673</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.006284</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-31</th>\n",
       "      <td>-0.030799</td>\n",
       "      <td>0.021800</td>\n",
       "      <td>-0.009345</td>\n",
       "      <td>0.001872</td>\n",
       "      <td>0.008085</td>\n",
       "      <td>-0.066417</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.013631</td>\n",
       "      <td>0.018277</td>\n",
       "      <td>-0.043344</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000356</td>\n",
       "      <td>-0.035942</td>\n",
       "      <td>-0.036410</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000866</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.065905</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.034990</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>168 rows × 77 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A        AG        AL        AP        AU         B   BB  \\\n",
       "t                                                                             \n",
       "2010-01-31       NaN       NaN       NaN       NaN       NaN       NaN  NaN   \n",
       "2010-02-28 -0.017422       NaN -0.049487       NaN -0.005591 -0.008202  NaN   \n",
       "2010-03-31  0.004177       NaN -0.005984       NaN -0.007704  0.003822  NaN   \n",
       "2010-04-30  0.020033       NaN -0.032664       NaN  0.048426  0.029448  NaN   \n",
       "2010-05-31 -0.030109       NaN -0.061289       NaN  0.037210 -0.018121  NaN   \n",
       "...              ...       ...       ...       ...       ...       ...  ...   \n",
       "2023-08-31  0.073240  0.024424  0.027853  0.005971  0.013087  0.065657  0.0   \n",
       "2023-09-30 -0.032371 -0.026337  0.046320  0.016333 -0.004960 -0.082331  0.0   \n",
       "2023-10-31 -0.035450 -0.016333 -0.004003 -0.076497  0.018381 -0.050234  0.0   \n",
       "2023-11-30  0.035844  0.066651 -0.031115  0.052948 -0.004249 -0.028826  0.0   \n",
       "2023-12-31 -0.030799  0.021800 -0.009345  0.001872  0.008085 -0.066417  0.0   \n",
       "\n",
       "                  BC        BU         C  ...        TS        UR         V  \\\n",
       "t                                         ...                                 \n",
       "2010-01-31       NaN       NaN       NaN  ...       NaN       NaN       NaN   \n",
       "2010-02-28       NaN       NaN -0.015174  ...       NaN       NaN -0.023841   \n",
       "2010-03-31       NaN       NaN  0.029651  ...       NaN       NaN -0.012065   \n",
       "2010-04-30       NaN       NaN -0.003384  ...       NaN       NaN -0.005301   \n",
       "2010-05-31       NaN       NaN  0.013177  ...       NaN       NaN -0.031423   \n",
       "...              ...       ...       ...  ...       ...       ...       ...   \n",
       "2023-08-31  0.000611  0.011367  0.033971  ...  0.000593  0.090989 -0.008339   \n",
       "2023-09-30 -0.028603  0.054516 -0.037916  ... -0.001479 -0.041748 -0.025032   \n",
       "2023-10-31 -0.006670  0.008028 -0.027170  ... -0.000491  0.048596 -0.033567   \n",
       "2023-11-30  0.015982 -0.017112 -0.015904  ... -0.002326 -0.010162 -0.034131   \n",
       "2023-12-31  0.013631  0.018277 -0.043344  ...  0.000356 -0.035942 -0.036410   \n",
       "\n",
       "            WH        WR        WS        WT         Y   ZC        ZN  \n",
       "t                                                                      \n",
       "2010-01-31 NaN       NaN       NaN       NaN       NaN  NaN       NaN  \n",
       "2010-02-28 NaN -0.032459  0.004032  0.001344  0.000304  NaN -0.128161  \n",
       "2010-03-31 NaN  0.071886  0.001368 -0.003602  0.013863  NaN  0.042517  \n",
       "2010-04-30 NaN  0.011051  0.006208 -0.033942  0.015512  NaN -0.029098  \n",
       "2010-05-31 NaN -0.059860 -0.009550  0.015222 -0.040767  NaN -0.151016  \n",
       "...         ..       ...       ...       ...       ...  ...       ...  \n",
       "2023-08-31 NaN  0.016208       NaN       NaN  0.075390  0.0  0.005648  \n",
       "2023-09-30 NaN -0.152358       NaN       NaN -0.035671  0.0  0.038391  \n",
       "2023-10-31 NaN -0.094011       NaN       NaN  0.000289  NaN -0.026311  \n",
       "2023-11-30 NaN  0.030439       NaN       NaN  0.034673  NaN -0.006284  \n",
       "2023-12-31 NaN  0.000866       NaN       NaN -0.065905  NaN -0.034990  \n",
       "\n",
       "[168 rows x 77 columns]"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xx2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2c44d59c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0b00d3e7",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "9c0b1b9c",
   "metadata": {},
   "outputs": [],
   "source": [
    "dxx = dff5.rolling(window=120).apply(lambda x: x.autocorr(lag=21))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "b5453800",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1fc12c159d0>"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sig = dff3.rolling(21).sum() *dxx\n",
    "sig = ((dff3.rolling(21).sum() > 0)*1 + (dff3.rolling(21).sum() < 0)*-1)*dxx\n",
    "# sig = dxx\n",
    "sig = sig.resample('M').last()\n",
    "sig = sig.rank(1,pct=True)\n",
    "sig = (sig > 0.8)*1 + (sig < 0.2)*-1\n",
    "ret = sig*dff3.resample('M').sum().shift(-1)\n",
    "ret = ret.sum(1)/(sig !=0).sum(1)\n",
    "ret.cumsum().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "bb95495c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>AG</th>\n",
       "      <th>AL</th>\n",
       "      <th>AP</th>\n",
       "      <th>AU</th>\n",
       "      <th>B</th>\n",
       "      <th>BB</th>\n",
       "      <th>BC</th>\n",
       "      <th>BU</th>\n",
       "      <th>C</th>\n",
       "      <th>...</th>\n",
       "      <th>TS</th>\n",
       "      <th>UR</th>\n",
       "      <th>V</th>\n",
       "      <th>WH</th>\n",
       "      <th>WR</th>\n",
       "      <th>WS</th>\n",
       "      <th>WT</th>\n",
       "      <th>Y</th>\n",
       "      <th>ZC</th>\n",
       "      <th>ZN</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-04</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-05</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-06</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-07</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-08</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-11</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>...</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-12</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>...</td>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-13</th>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>...</td>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-14</th>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-15</th>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>-1</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "      <td>0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3391 rows × 77 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            A  AG  AL  AP  AU  B  BB  BC  BU  C  ...  TS  UR  V  WH  WR  WS  \\\n",
       "t                                                ...                          \n",
       "2010-01-04  0   0   0   0   0  0   0   0   0  0  ...   0   0  0   0   0   0   \n",
       "2010-01-05  0   0   0   0   0  0   0   0   0  0  ...   0   0  0   0   0   0   \n",
       "2010-01-06  0   0   0   0   0  0   0   0   0  0  ...   0   0  0   0   0   0   \n",
       "2010-01-07  0   0   0   0   0  0   0   0   0  0  ...   0   0  0   0   0   0   \n",
       "2010-01-08  0   0   0   0   0  0   0   0   0  0  ...   0   0  0   0   0   0   \n",
       "...        ..  ..  ..  ..  .. ..  ..  ..  .. ..  ...  ..  .. ..  ..  ..  ..   \n",
       "2023-12-11  1   1  -1  -1   1 -1   0   1   1 -1  ...  -1  -1 -1   0   1   0   \n",
       "2023-12-12  1   1  -1  -1   1 -1   0   1   1 -1  ...  -1   1 -1   0   1   0   \n",
       "2023-12-13 -1   1  -1   1  -1 -1   0   1   1 -1  ...  -1   1 -1   0   1   0   \n",
       "2023-12-14 -1   1  -1   1   1 -1   0   1   1 -1  ...   1  -1 -1   0   1   0   \n",
       "2023-12-15 -1   1  -1   1   1 -1   0   1   1 -1  ...   1  -1 -1   0   1   0   \n",
       "\n",
       "            WT  Y  ZC  ZN  \n",
       "t                          \n",
       "2010-01-04   0  0   0   0  \n",
       "2010-01-05   0  0   0   0  \n",
       "2010-01-06   0  0   0   0  \n",
       "2010-01-07   0  0   0   0  \n",
       "2010-01-08   0  0   0   0  \n",
       "...         .. ..  ..  ..  \n",
       "2023-12-11   0 -1   0  -1  \n",
       "2023-12-12   0 -1   0  -1  \n",
       "2023-12-13   0 -1   0  -1  \n",
       "2023-12-14   0 -1   0  -1  \n",
       "2023-12-15   0 -1   0  -1  \n",
       "\n",
       "[3391 rows x 77 columns]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(dff3.rolling(21).sum() > 0)*1 + (dff3.rolling(21).sum() < 0)*-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2ce2096d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b828fb3e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "462e22a6",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>AG</th>\n",
       "      <th>AL</th>\n",
       "      <th>AP</th>\n",
       "      <th>AU</th>\n",
       "      <th>B</th>\n",
       "      <th>BB</th>\n",
       "      <th>BC</th>\n",
       "      <th>BU</th>\n",
       "      <th>C</th>\n",
       "      <th>...</th>\n",
       "      <th>TS</th>\n",
       "      <th>UR</th>\n",
       "      <th>V</th>\n",
       "      <th>WH</th>\n",
       "      <th>WR</th>\n",
       "      <th>WS</th>\n",
       "      <th>WT</th>\n",
       "      <th>Y</th>\n",
       "      <th>ZC</th>\n",
       "      <th>ZN</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-02-28</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-03-31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-04-30</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-05-31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-08-31</th>\n",
       "      <td>-0.036401</td>\n",
       "      <td>0.111233</td>\n",
       "      <td>-0.101984</td>\n",
       "      <td>0.086395</td>\n",
       "      <td>0.130922</td>\n",
       "      <td>0.002003</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.002484</td>\n",
       "      <td>0.117050</td>\n",
       "      <td>0.053106</td>\n",
       "      <td>...</td>\n",
       "      <td>0.027840</td>\n",
       "      <td>0.022230</td>\n",
       "      <td>-0.064468</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.112622</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.020416</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.009243</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-09-30</th>\n",
       "      <td>-0.153059</td>\n",
       "      <td>0.050705</td>\n",
       "      <td>-0.124014</td>\n",
       "      <td>0.081470</td>\n",
       "      <td>0.057394</td>\n",
       "      <td>-0.079392</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.010536</td>\n",
       "      <td>0.177662</td>\n",
       "      <td>-0.078976</td>\n",
       "      <td>...</td>\n",
       "      <td>0.050553</td>\n",
       "      <td>0.019837</td>\n",
       "      <td>-0.087717</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.025222</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.110122</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.093152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-10-31</th>\n",
       "      <td>-0.153877</td>\n",
       "      <td>-0.007168</td>\n",
       "      <td>-0.090254</td>\n",
       "      <td>0.010035</td>\n",
       "      <td>-0.019121</td>\n",
       "      <td>-0.054661</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.047591</td>\n",
       "      <td>0.065556</td>\n",
       "      <td>-0.010689</td>\n",
       "      <td>...</td>\n",
       "      <td>0.025180</td>\n",
       "      <td>0.014842</td>\n",
       "      <td>-0.045908</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.023721</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.193676</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.187523</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-11-30</th>\n",
       "      <td>-0.130145</td>\n",
       "      <td>0.030049</td>\n",
       "      <td>-0.198924</td>\n",
       "      <td>-0.162355</td>\n",
       "      <td>0.065312</td>\n",
       "      <td>0.030266</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.081415</td>\n",
       "      <td>-0.024045</td>\n",
       "      <td>-0.005247</td>\n",
       "      <td>...</td>\n",
       "      <td>0.028008</td>\n",
       "      <td>-0.022742</td>\n",
       "      <td>-0.133922</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.070650</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.025158</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.239373</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-31</th>\n",
       "      <td>-0.147951</td>\n",
       "      <td>0.074841</td>\n",
       "      <td>-0.174621</td>\n",
       "      <td>-0.160647</td>\n",
       "      <td>0.090140</td>\n",
       "      <td>-0.049868</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.070371</td>\n",
       "      <td>-0.032368</td>\n",
       "      <td>0.016286</td>\n",
       "      <td>...</td>\n",
       "      <td>0.022651</td>\n",
       "      <td>0.001711</td>\n",
       "      <td>-0.156760</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.015262</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.116654</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.199800</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>168 rows × 77 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A        AG        AL        AP        AU         B  BB  \\\n",
       "t                                                                            \n",
       "2010-01-31       NaN       NaN       NaN       NaN       NaN       NaN NaN   \n",
       "2010-02-28       NaN       NaN       NaN       NaN       NaN       NaN NaN   \n",
       "2010-03-31       NaN       NaN       NaN       NaN       NaN       NaN NaN   \n",
       "2010-04-30       NaN       NaN       NaN       NaN       NaN       NaN NaN   \n",
       "2010-05-31       NaN       NaN       NaN       NaN       NaN       NaN NaN   \n",
       "...              ...       ...       ...       ...       ...       ...  ..   \n",
       "2023-08-31 -0.036401  0.111233 -0.101984  0.086395  0.130922  0.002003 NaN   \n",
       "2023-09-30 -0.153059  0.050705 -0.124014  0.081470  0.057394 -0.079392 NaN   \n",
       "2023-10-31 -0.153877 -0.007168 -0.090254  0.010035 -0.019121 -0.054661 NaN   \n",
       "2023-11-30 -0.130145  0.030049 -0.198924 -0.162355  0.065312  0.030266 NaN   \n",
       "2023-12-31 -0.147951  0.074841 -0.174621 -0.160647  0.090140 -0.049868 NaN   \n",
       "\n",
       "                  BC        BU         C  ...        TS        UR         V  \\\n",
       "t                                         ...                                 \n",
       "2010-01-31       NaN       NaN       NaN  ...       NaN       NaN       NaN   \n",
       "2010-02-28       NaN       NaN       NaN  ...       NaN       NaN       NaN   \n",
       "2010-03-31       NaN       NaN       NaN  ...       NaN       NaN       NaN   \n",
       "2010-04-30       NaN       NaN       NaN  ...       NaN       NaN       NaN   \n",
       "2010-05-31       NaN       NaN       NaN  ...       NaN       NaN       NaN   \n",
       "...              ...       ...       ...  ...       ...       ...       ...   \n",
       "2023-08-31  0.002484  0.117050  0.053106  ...  0.027840  0.022230 -0.064468   \n",
       "2023-09-30  0.010536  0.177662 -0.078976  ...  0.050553  0.019837 -0.087717   \n",
       "2023-10-31 -0.047591  0.065556 -0.010689  ...  0.025180  0.014842 -0.045908   \n",
       "2023-11-30 -0.081415 -0.024045 -0.005247  ...  0.028008 -0.022742 -0.133922   \n",
       "2023-12-31 -0.070371 -0.032368  0.016286  ...  0.022651  0.001711 -0.156760   \n",
       "\n",
       "            WH        WR  WS  WT         Y  ZC        ZN  \n",
       "t                                                         \n",
       "2010-01-31 NaN       NaN NaN NaN       NaN NaN       NaN  \n",
       "2010-02-28 NaN       NaN NaN NaN       NaN NaN       NaN  \n",
       "2010-03-31 NaN       NaN NaN NaN       NaN NaN       NaN  \n",
       "2010-04-30 NaN       NaN NaN NaN       NaN NaN       NaN  \n",
       "2010-05-31 NaN       NaN NaN NaN       NaN NaN       NaN  \n",
       "...         ..       ...  ..  ..       ...  ..       ...  \n",
       "2023-08-31 NaN  0.112622 NaN NaN -0.020416 NaN -0.009243  \n",
       "2023-09-30 NaN -0.025222 NaN NaN -0.110122 NaN -0.093152  \n",
       "2023-10-31 NaN  0.023721 NaN NaN -0.193676 NaN -0.187523  \n",
       "2023-11-30 NaN  0.070650 NaN NaN -0.025158 NaN -0.239373  \n",
       "2023-12-31 NaN  0.015262 NaN NaN -0.116654 NaN -0.199800  \n",
       "\n",
       "[168 rows x 77 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sig = dxx.resample('M').last()\n",
    "sig.r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "67ec6e85",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aeac1115",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c67b68a0",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "82d37962",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.05073339787025606"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dff3['SC'].autocorr(lag=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "2d537c76",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>SC</th>\n",
       "      <th>SC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2010-01-04</th>\n",
       "      <th>SC</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SC</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2010-01-05</th>\n",
       "      <th>SC</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SC</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-06</th>\n",
       "      <th>SC</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-12-13</th>\n",
       "      <th>SC</th>\n",
       "      <td>0.065661</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2023-12-14</th>\n",
       "      <th>SC</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.052752</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SC</th>\n",
       "      <td>0.052752</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2023-12-15</th>\n",
       "      <th>SC</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.017682</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SC</th>\n",
       "      <td>0.017682</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6782 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                     SC        SC\n",
       "t                                \n",
       "2010-01-04 SC       NaN       NaN\n",
       "           SC       NaN       NaN\n",
       "2010-01-05 SC       NaN       NaN\n",
       "           SC       NaN       NaN\n",
       "2010-01-06 SC       NaN       NaN\n",
       "...                 ...       ...\n",
       "2023-12-13 SC  0.065661  1.000000\n",
       "2023-12-14 SC  1.000000  0.052752\n",
       "           SC  0.052752  1.000000\n",
       "2023-12-15 SC  1.000000  0.017682\n",
       "           SC  0.017682  1.000000\n",
       "\n",
       "[6782 rows x 2 columns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([dff3['SC'],dff3['SC'].shift(20)],axis=1).rolling(120).corr()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fc53536f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "55c14028",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "755cd583",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "403.4508"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "4034508/10000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9d977047",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
